#include<bits/stdc++.h>
using namespace std;

struct node
{
	int x, y;
};

int m, n;
int a[150][150];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};

void bfs(int x, int y)
{
	queue<node> q;
	q.push({x, y});
	a[x][y] = 0;
	
	while(!q.empty())
	{
		node t = q.front();
		q.pop();
		
		for(int i = 0;i < 4;i++)
		{
			int xx = t.x+dx[i]; 
			int yy = t.y+dy[i]; 
			if(a[xx][yy])		// && xx <= m && xx > 0 && yy <= n && yy > 0
			{
				q.push({xx, yy});
				a[xx][yy] = 0;
			}
		}
	}
}


int main()
{
	cin>>m>>n;
	for(int i = 1;i <= m;i++)
		for(int j = 1;j <= n;j++)
			cin>>a[i][j];
	
	int cnt = 0;
	for(int i = 1;i <= m;i++)
	{
		for(int j = 1;j <= n;j++)
		{
			if(a[i][j])
			{
				bfs(i, j);
				cnt++;
			}
		}
	}
	cout<<cnt;
    return 0;
}

